/* Zatok - язык программирования текстовых игр
 * (С) 2010 - 2012 Меркулов Матвей Юрьевич
 * Код лицензирован под лицензией GNU LGPL
 * Вы можете прочитать текст лицензии по адресу:
 * http://www.gnu.org/copyleft/lesser.html
 * или прочитать русский перевод по адресу:
 * http://ru.wikisource.org/wiki/GNU_Lesser_General_Public_License
 */

package base.value;

import base.value.userobject.CUserObject;
import base.CObject;

public class CFloatValue extends CValue {
	public float Value;

	
	
	public CFloatValue( float NewValue ) {
		Value = NewValue;
	}



	@Override
	public void Init() {
		Value = 0;
	}



	@Override
	public CType GetType() {
		return CType.Float;
	}


	@Override
	public boolean ToBoolean(){
		return ( Value != 0 );
	}



	@Override
    public int ToInt(){
		return ( int ) Value;
	}



	@Override
    public float ToFloat(){
		return Value;
	}



	@Override
	public String ToString(){
		return String.valueOf( Value );
	}



	@Override
	public CUserObject ToObject() {
		Error( "Целое значение нельзя использовать в операциях с объектами" );
		return null;
	}



	@Override
	public void EquateTo( CObject Obj ) {
		Value = Obj.ToFloat();
	}
	
	
	
	@Override
	public boolean IdenticalTo( CValue Obj ) {
		if( Obj.GetType() != CType.Float ) return false;
		if( Value == Obj.ToFloat() ) return true; else return false;
	}
	
	
	
	@Override
	public CValue Clone() {
		return new CFloatValue( Value );
	}



	@Override
	public CValue[] ToArray() {
		CValue[] Array = new CValue[ 1 ];
		Array[ 0 ] = new CFloatValue( Value );
		return Array;
	}
	
	
	
	@Override
	public String toString() {
		return ToString();
	}
	
	
	
	@Override
	public void ReplaceValue( float NewValue ) {
		Value = NewValue;
	}
}
